package top.kaoshanji.p3ch12a;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import java.util.ArrayList;
import java.util.List;

/**
 * 代码清单-p3ch12a-387页a：长度可变参数的类型为不可具体化类型时存在的类型安全问题
 * author kaoshanji
 * ^_^
 * create time 2025/2/6 15:36
 */
public class Varargs {

    private static final Logger logger = LogManager.getLogger(Varargs.class);

    public static void main(String[] args) {
        logger.info("...代码清单-p3ch12a-387页a：长度可变参数的类型为不可具体化类型时存在的类型安全问题...");

        Varargs varargs = new Varargs();
        varargs.useVarargsMethod();

    }

    public void varargsMethod(List<String>... values) {
        Object[] array = values;
        List<Integer> list = (List<Integer>) array[0];
        list.add(1);
    }

    public void useVarargsMethod() {
        List<String> list = new ArrayList<>();
        list.add("Hello");

        varargsMethod(list);
        String str = list.get(1); // 抛出 ClassCastException 异常
    }

}
